package NP;
import java.io.*;
import java.util.*;


public class Test {
public static void main(String[] args) throws Exception {
	if (args.length < 2){
	    System.out.println("Usage: java  <files>  <mode>");
		System.out.println("where modes include: -v (verif), -nd (non d�terministe), -exh (exhaustif)");}
	
	else {
	BufferedReader donnee  = new BufferedReader (new FileReader(args[0])); //le fichier qui contient les donn�es du pb
	//lecture des objets
	String  u=donnee.readLine();
	int nbObjets=Integer.parseInt(u);
	donnee.readLine();
	int lesObjets[]=new int[nbObjets];
	for (int i=0;i< nbObjets;i++) lesObjets[i]=Integer.parseInt(donnee.readLine());
	donnee.readLine();
	
	u=donnee.readLine();
	
	//lecture des sacs
	int nbSacs=Integer.parseInt(u);
	donnee.readLine();
	int lesSacs[]=new int[nbSacs];
	for (int i=0;i< nbSacs;i++) lesSacs[i]=Integer.parseInt(donnee.readLine());
	
	//Le pb � traiter
    PbBinPack pb=new PbBinPack(nbObjets,lesObjets,nbSacs,lesSacs);
   
  //les diff�rentes options
    if (args[1].equals("-exh")) System.out.println(pb.aUneSolution());
	else if (args[1].equals("-nd")) System.out.println(pb.aUneSolutionNonDeterministe());
	else if (args[1].equals("-v")) {
		 BufferedReader entree = new BufferedReader (new InputStreamReader(System.in));
		 int aff[]=new int[nbObjets];
		 for (int i=0;i < nbObjets; i++) {
		    System.out.print("donnez un no de sacs entre 0 et "); System.out.println(nbSacs-1);
		    System.out.print("pour l'objet "); System.out.println(i);
		    aff[i]=Integer.parseInt(entree.readLine());
		    if (aff[i]<0 || aff[i]>=nbSacs) throw new Exception("valeur non autorisee");}
         Certificat<PbBinPack> cert =new CertificatBinPack(pb,aff); //constructeur qui affecte aux sacs les valeurs de aff;
		 System.out.println(cert.estCorrect(pb));
		}
	}
	}
}



